﻿<html DIR="LTR" xmlns:tool="http://www.microsoft.com/tooltip" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:ddue="http://ddue.schemas.microsoft.com/authoring/2003/5" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
  <head>
    <META HTTP-EQUIV="Content-Type" CONTENT="text/html; CHARSET=utf-8" />
    <META NAME="save" CONTENT="history" />
    <title>Tratando instruções complexas</title>
    
    <link rel="stylesheet" type="text/css" href="../local/Classic.css">
      
    </link>
    
    <script src="../local/script.js">
      
    </script><script src="../local/script_main.js">&amp;nbsp;</script>
  </head>
  <body>
    <!--Topic built:04/01/2010 05:03:30-->

    
    
    
    
    
    
    
    
    
    <div id="header">
      <table width="100%" id="topTable"><tr>
          <td align="left">
            <span id="headerBold">Tratando instruções complexas</span>
          </td>
          <td align="right">
            
          </td>
        </tr></table>
      
      
      
    </div>
    <div id="mainSection">
      
        
        
    <font color="DarkGray">
      
    </font>
    <p />
    
    <p />
  
        <div id="introductionSection" class="section">
    <p>Quando você usar o Microsoft SQL Server JDBC Driver, pode ter que tratar instruções complexas, incluindo instruções que são geradas dinamicamente em tempo de execução. Instruções complexas geralmente realizam uma variedade de tarefas, incluindo atualizações, inserções e exclusões. Estes tipos de instruções também podem retornar vários conjuntos de resultados e parâmetros de saída. Nestas situações, o código Java que executa as instruções pode não saber com antecedência os tipos e o número de objetos e dados retornados. </p>
    <p>Para processar instruções complexas com eficiência, o driver JDBC fornece vários métodos para consultar os objetos e os dados que são retornados, para que seu aplicativo possa processá-los corretamente. A chave para processar instruções complexas é o método <a href="e1367f39-23d7-4e26-b160-6d988d7e6988.htm">execute</a> da classe <a href="ec24963c-8b51-4838-91e9-1fbfa2347451.htm">SQLServerStatement</a>. Este método retorna um valor <b>boolean</b>. Quando o valor for true, o primeiro resultado retornado das instruções será um conjunto de resultados. Quando o valor for false, o primeiro resultado retornado será uma contagem de atualização.</p>
    <p>Quando você souber o tipo de objeto ou dado que foi retornado, pode usar o método <a href="929a14e2-8e98-4c32-89aa-86733c717ec1.htm">getResultSet</a> ou <a href="e9570228-4500-44b6-b2f1-84ac050b5112.htm">getUpdateCount</a> para processar esses dados. Para prosseguir para o próximo objeto ou dado retornado da instrução complexa, chame o método <a href="df89db50-0b2f-4094-820a-30be25ad72fe.htm">getMoreResults</a>.</p>
    <p>No exemplo a seguir, uma conexão aberta para o banco de dados de exemplo SQL Server 2005 AdventureWorks é passada para a função, uma instrução complexa é construída, combinando uma chamada de procedimento armazenado com uma instrução SQL, as instruções são executadas e, em seguida, um loop <code>do</code> é usado para processar todos os conjuntos de resultados e contagens atualizadas que são retornadas.</p>
    <div class="sampleCode"><span codeLanguage="other"><pre>public static void executeComplexStatement(Connection con) {
   try {
      String sqlStringWithUnknownResults = "{call dbo.uspGetEmployeeManagers(50)};SELECT TOP 10 * FROM Person.Contact";
      Statement stmt = con.createStatement();
      boolean results = stmt.execute(sqlStringWithUnknownResults);
      int count = 0;
      do {
         if (results) {
            ResultSet rs = stmt.getResultSet();
            System.out.println("Result set data displayed here.");
            rs.close();
         } else {
            count = stmt.getUpdateCount();
            if (count &gt;= 0) {
               System.out.println("DDL or update data displayed here.");
            } else {
               System.out.println("No more results to process.");
            }
         }
         results = stmt.getMoreResults();
      } while (results || count != -1);
      stmt.close();
   }
   catch (Exception e) {
      e.printStackTrace();
   }
}
</pre></span></div>
  </div><span id="seeAlsoSpan"><h1 class="heading">Consulte também</h1></span><div id="seeAlsoSection" class="section" name="collapseableSection"><a href="7f8f3e8f-841e-4449-9154-b5366870121f.htm">Usando instruções com o JDBC Driver</a><br /><br /></div><!--[if gte IE 5]>
			<tool:tip element="seeAlsoToolTip" avoidmouse="false"/><tool:tip element="languageFilterToolTip" avoidmouse="false"/><tool:tip element="roleInfoSpan" avoidmouse="false"/>
		<![endif]-->
      <div id="footer" class="section">
        
		<hr />
		
		<span id="fb" class="feedbackcss">
			
			
		</span>
		
		<a href="9bad553b-9e70-4696-8499-2e35f772a1e0.htm">
			
			© 2010 Microsoft Corporation. Todos os direitos reservados.
		</a>
 	
	
      </div>
    </div>
  </body>
</html>